/**
 * Yolema.com Inc.
 * Copyright (c) 2011-2012 All Rights Reserved.
 */
package org.grayrabbit.pay;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.grayrabbit.pay.core.model.exception.PayException;

/**
 * 检查数据
 * 
 * @author wy
 * @version $Id: CheckUtil.java, v 0.1 2012-11-4 下午8:46:50 wy Exp $
 */
public class CheckUtil {

    /**
     * 数字判断
     * 
     * @param object
     * @param message
     */
    public static void assertIsNumber(String str, String message) {
        assertNotNull(str, message);
        assertRegex(str, "^\\d*$", message);
    }

    /**
     * 长度范围判断
     * 
     * @param str
     * @param min
     * @param max
     * @param msg
     */
    public static void assertRangeLength(String str, int min, int max, String msg) {
        assertNotNull(str, msg);
        if (!(str.length() >= min && str.length() <= max)) {
            throw new PayException(msg);
        }
    }

    /**
     * 长度判断
     * 
     * @param str
     * @param len
     * @param msg
     */
    public static void assertLength(String str, int len, String msg) {
        assertNotNull(str, msg);
        if (str.length() != len) {
            throw new PayException(msg);
        }
    }

    /**
     * 最小长度判断
     * 
     * @param str
     * @param min
     * @param msg
     */
    public static void assertMinLength(String str, int min, String msg) {
        assertNotNull(str, msg);
        if (str.length() < min) {
            throw new PayException(msg);
        }
    }

    /**
     * 最大长度判断
     * 
     * @param str
     * @param max
     * @param msg
     */
    public static void assertMaxLength(String str, int max, String msg) {
        assertNotNull(str, msg);
        if (str.length() > max) {
            throw new PayException(msg);
        }
    }

    /**
     * 正则匹配判断
     * 
     * @param str
     * @param regex
     * @param message
     */
    public static void assertRegex(String str, String regex, String message) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        if (!matcher.matches()) {
            throw new PayException(message);
        }
    }

    /**
     * 不能为空
     * 
     * @param object
     * @param message
     */
    public static void assertNotNull(Object object, String message) {
        if (object == null) {
            throw new PayException(message);
        }
    }

}
